package magazyn.controller;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import magazyn.model.Produkty;
import magazyn.util.HibernateUtil;

public class ProduktyManager extends HibernateUtil{
	
	/**
	 * Metoda dodajaca do nowe produkty do bazy
	 * 
	 */
	public Produkty add(Produkty produkt){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		session.save(produkt);
		session.getTransaction().commit();
		return produkt;
		
	}
	
	/**
	 * Metoda usuwajaca poszczegolne produkty z bazy
	 * 
	 */
	public Produkty delete(int id){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Produkty produkt = (Produkty) session.load(Produkty.class, id);
		
		if(produkt != null){
			session.delete(produkt);
			
		}
		
		session.getTransaction().commit();
		return produkt;
	}
	
	/**
	 * Metoda do edytowania poszczegolnych produktow w bazie
	 * 
	 */
	public Produkty update1(Produkty produkt){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		produkt.setNazwa(produkt.getNazwa());
		produkt.setCena_hurtowa(produkt.getCena_hurtowa());
		produkt.setId_kategori(produkt.getId_kategori());
		produkt.setCena_sprzedazy(produkt.getCena_sprzedazy());
		session.update(produkt);			
		System.out.println("Zrobiono update'a: " + produkt.getNazwa());
		session.getTransaction().commit();
		return produkt;
		
	}
	
	/**
	 * Metoda wyswietlajaca liste produktow z bazy
	 * 
	 */	
	public List<Produkty> list(){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		List<Produkty> produkty = null;
		
		try {
			produkty = (List<Produkty>)session.createQuery("from Produkty").list();
			
		} catch (HibernateException e) {
			e.printStackTrace();
			session.getTransaction().rollback();
			
		}		
		
		session.getTransaction().commit();
		return produkty;
		
	}

}
